package com.duobaoyu.dby.supply.db.repository.order;

import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.duobaoyu.dby.common.mybatis.base.DbyService;
import com.duobaoyu.dby.supply.common.biz.bo.order.OrderAmountStatisticsBO;
import com.duobaoyu.dby.supply.common.biz.bo.order.OrderExportBO;
import com.duobaoyu.dby.supply.common.biz.bo.order.OrderListBO;
import com.duobaoyu.dby.supply.common.biz.dto.order.OrderPageDTO;
import com.duobaoyu.dby.supply.common.biz.dto.order.OrderStatisticsAmountDTO;
import com.duobaoyu.dby.supply.db.entity.order.Order;

import java.util.List;

/**
 * 订单
 *
 * @author fengshaoyu
 * @version 1.0.0
 * @date 2023/10/7 10:32
 */
public interface OrderRepository extends DbyService<Order> {

    /**
     * 更新订单
     * @return 影响行数
     */
    int updateOrder(LambdaUpdateWrapper<Order> wrapper);

	/**
	 * 分页查询订单列表信息
	 * @param orderPage 入参
	 * @return IPage<OrderListBO>
	 */
    IPage<OrderListBO> queryOrderPage(OrderPageDTO orderPage);

	/**
	 * 获取订单列表导出信息
	 * @param orderPage 入参
	 * @return List<OrderExportBO>
	 */
    List<OrderExportBO> listOrderExportInfo(OrderPageDTO orderPage);

	/**
	 * 计数订单列表导出信息
	 * @param orderPage 入参
	 * @return int
	 */
	int countOrderExportInfo(OrderPageDTO orderPage);

	/**
	 * 分页查询订单总条数
	 * @param orderPage 入参
	 * @return 总条数
	 */
	int queryOrderPageCount(OrderPageDTO orderPage);

	/**
	 * 订单金额统计
	 */
    List<OrderAmountStatisticsBO> statisticsAmount(OrderStatisticsAmountDTO orderStatisticsAmount);

	/**
	 * 无物流信息
	 * @param page 页码
	 * @param pageSize 页长
	 * @return
	 */
    List<Order> noLogisticsOrders(Integer page, Integer pageSize);
}
